from war_utils import *

# step1: 创建模板，也叫做类
# 创建一个类，至于什么是类。"类是模版！类是模板！类是模板！"
class Magic:
    # 类的属性
    def __init__(self, name, magic_type, life, attack_value, hit_rate, magic_value):
        self.name = name                # 法师的名字
        self.magic_type = magic_type    # 法师的类型
        self.life = life                # 法师的生命值
        self.attack_value = attack_value
        self.hit_rate = hit_rate
        self.magic_value = magic_value

    def op_deal_with(self, op_num, attack_obj):
        """
        根据输入的操作符，执行相应的操作
        :param op_num: 1表示攻击，0表示回蓝
        :param attack_obj: 攻击的对象
        """
        if op_num == 1:
            self.attack(attack_obj)
        else:
            self.sleep()

    # 类的方法
    def attack(self, attack_obj):
        """
        法师的攻击方法
        :param attack_obj: 攻击的对象
        :return:
        """
        if probability_judge(self.hit_rate):
            attack_obj.life -= self.attack_value
        else:
            print("%s法师，手抖了一下，导致法术丢失了!" % self.name)

    # 类的方法
    def sleep(self):
        """
        法师的回蓝方法
        :return:
        """
        print("法师开始回蓝")


# 创建一个类，至于什么是类。"类是模版！类是模板！类是模板！"
# 类名，大写！
class Soldier:
    # 类的属性
    def __init__(self, name, soldier_type, life, attack_value, step, distance):
        self.name = name
        self.soldier_type = soldier_type
        self.life = life
        self.attack_value = attack_value    # 战士的攻击力
        self.step = step                    # 战士的前进速度
        self.distance = distance            # 战士与法师的距离

    # 类的方法
    def attack(self, attack_obj):
        """
        战士的攻击方法
        :param attack_obj: 攻击的对象
        :return:
        """
        return

    # 类的方法
    def sleep(self):
        """
        法师的回蓝方法
        :return:
        """
        return

    def info(self):
        print("战士%s， 剩余血量%i, 距离法师距离%i" % (self.name, self.life, self.distance))